<!--带校验的数值输入框-->
<template>
  <el-form v-show="item.visible" label-position="top" :model="item" :rules="rules" class="demo-form-stacked" :style="paddingStyle">
    <el-form-item :label="item.label" prop="value">
      <template v-if="item.toolTip">
        <el-tooltip
          effect="light"
          placement="bottom-end"
          class="hint_information"
        >
          <div slot="content">
            <template v-for="i in item.toolTip.split(';')">
              {{ i }} <br>
            </template>
          </div>
          <i class="fa fa-question-circle row_information" style="cursor:pointer;" />
        </el-tooltip>
      </template>
      <el-input-number
        v-model="item.value"
        size="small"
        :placeholder="item.placeholder"
        @change="updateLocal"
      />
    </el-form-item>
  </el-form>
</template>
<script>
export default {
  name: 'TipInputNumber',
  props: ['item', 'index'],
  data: function() {
    var valueValidator = (rule, value, callback) => {
      if (this.item.required) {
        try {
          var reg = eval(this.item.rexp)
          if (!reg.test(value)) {
            callback(new Error(this.item.placeholder))
          }
        } catch (e) {
          console.log(e.message)
          callback(new Error('校验异常！'))
        }
      }
      callback()
    }
    return {
      paddingStyle: {
        paddingLeft: '5px',
        paddingRight: '5px'
      },
      rules: {
        value: [
          { required: this.item.required, validator: valueValidator, trigger: 'change' }
        ]
      }
    }
  },
  methods: {
    updateLocal: function() {
      //  this.$store.commit("localStorageSave");
    }
  }
}
</script>

<style scoped>
  .el-form-item {
    margin-bottom: 5px;
  }

  .el-input-number {
    width: 100%
  }
</style>
